草庐IT

C++ 类 class

全部标签

c++ - 对齐 : warning C4316 in all classes that have aligned members

今天我遇到了很多麻烦,因为我跟踪了一个非常隐蔽的腐败漏洞。我想如果我真的注意警告就不会那么难找到它,但由于找不到有关为什么弹出此特定警告的相关信息,我让它滑动了,这是一个错误。所以这是VisualStudio2013给我的有罪警告:warningC4316:objectallocatedontheheapmaynotbealigned16它是在通过const引用将align(16)临时传递给构造函数时生成的,如以下代码所示:classVector{};__declspec(align(16))classVectorA{};classShape{public:Shape(constVec

c++ - GMock : How to return mock class variable as the return value

我是第一次尝试使用GMock(用于C++的谷歌模拟框架)。我有以下类(class):classLocalCache{public:virtualtime_tGetCurrentTime()=0;virtualintAddEntry(conststd::stringkey,std::string&value);virtualintGetEntry(conststd::stringkey,std::string&value);};GetEntry方法调用GetCurrentTime调用。我想模拟GetCurrentTime方法,以便我可以在测试中提前时钟以测试作为GetEntry调用的一部

c# - 如何制作 PInvoke 友好的 native API?

如何使原生API对PInvoke友好?有一些关于如何修改native程序以与P/Invoke一起使用的提示here.但是在我编写native程序之前,我应该注意哪些事项才能使我的程序/库PInvoke友好?使用C或C++都可以。更新:如果我编写CAPI,我必须做些什么才能使用如下C#语法进行P/Invoke:[DLLimport("MyDLL.dll")]是否可以对原生C++代码/库执行相同的操作?制作P/Invoke友好nativeAPI的一些技巧的总结/改写:+参数应该是本地类型(int、char*、float、...)+参数越少越好+如果动态内存被分配并传递给托管代码,请确保创建

c++ - 为什么 Builder 模式比在正在创建的 Class 对象中带有参数的 Constructor 更好?

为什么我们不能在构造函数本身中执行不同的构建步骤。如果构建步骤采用参数,为什么不能将它们作为参数提供给构造函数并在构造函数中用于创建对象。据我所知,在Builder模式中,客户端要创建哪个特定对象;那么在正在创建的类的对象中使用构建器而不是带有参数的构造函数有什么优势? 最佳答案 哦!我得到它。我正在查看维基百科示例并意识到Builder为何有用。当客户端不知道将哪些参数传递给构造函数时,这很有用,因为它非常复杂,因此无法直接调用构造函数并获取对象。因此,他向ConcreteBuilders寻求帮助,他们知道将哪些参数传递给构造函数

c++ - OpenGL 如何进行单元测试?

是否有使用OpenGL命令对函数或类进行单元测试的好方法?对于C++,我知道我可以将类作为模板并传递一个类来执行直接的opengl调用:namespacemyNamespace{structRealOpenglCall{staticinlinevoidglVertex2fv(constGLfloat*v){::glVertex2fv(v);}};templateclassSomeRendering{public:SomeRendering():v(){//setv}voidDraw(){T::glVertex2fv(v);}GLfloatv[4];};}在C和C++中,我可以将函数指针

c++ - C/C++ API 谜题

这是anearlierquestion的完全重写版本;我认为第一个版本省略了重要的细节;这一个提供了所有上下文。我有一些C++API的header。API声明了几个这样的类:classFoo{public:inlinevoidBar(void);/*moreinlines*/private:inlineFoo();/*maybemoreinlineconstructors*/}即没有成员,所有函数都是内联和公共(public)的,构造函数除外。构造函数是私有(private)的,因此,据我了解C++,我不能真正调用它们。要创建这些对象,我应该对它们使用auto_ptr:classFoo

c++ - 在 C++ 中处理 C 库匿名结构类型

我们有一个大型、旧的C++应用程序,其中包含大量遗留代码和一些用C编写的外部库。这些库很少更新——只有在我们发现错误并且供应商提供补丁时才会更新。上周在一个库中发生了这种情况,在集成新版本后,我们发现如果我们不在本地修改库(我们显然对上一个版本做了修改),我们的构建就会中断并显示以下错误消息:non-localfunction‘staticE*MyCls::myFct(*)’usesanonymoustype这是由于库声明了许多这样的句柄类型:#define_Opaquestruct{unsignedlongx;}*typedef_OpaqueHandle;typedef_Opaque

c++ - 你如何为具有继承的 C++ 类编写 C 包装器

我只是想知道是否有办法为具有继承的C++类创建一个C包装器API。考虑以下几点:classsampleClass1:publicsampleClass{public:intget(){returnthis.data*2;};voidset(intdata);}classsampleClass:publicsample{public:intget(){returnthis.data;}voidset(intdata){this.data=data;}}classsample{public:virtualintget();virtualvoidset(intdata);private:in

c++ - 移动构造函数和赋值运算符 : why no default for derived classes?

为什么没有为派生类创建默认移动构造函数或赋值运算符?证明我的意思;具有此设置代码:#includestructA{A(){}A(A&&){throw0;}A&operator=(A&&){throw0;}};structB:A{};以下任一行抛出:Ax(std::move(A());Ax;x=A();但以下都没有:Bx(std::move(B());Bx;x=B();以防万一,我使用GCC4.4进行了测试。编辑:后来使用GCC4.5进行的测试显示了相同的行为。 最佳答案 通读0xFCD中的12.8(12.8/17特别是移动构造函数)

c# - "C# base class virtual function"- "override in Managed C++ ref class"

我有一个.NET_4ManagedC++ref类,它派生自用C#编写的.NET_4基类。C#基类:namespaceCore{publicclassResourceManager{publicclass_Resource{publicvirtualvoidDelete(){}}}}托管C++类:namespaceInput.DI{publicrefclassMouse:ResourceManager::_Resource{public:virtualvoidDelete(){}};}这是我遇到的错误:'Input::DI::Mouse::Delete':matchesbaserefcl